package css.sword.annotation.kafka;

import java.util.Properties;

import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.PooledObjectFactory;
import org.apache.commons.pool2.impl.DefaultPooledObject;
import org.apache.kafka.clients.producer.KafkaProducer;
/**
 * 
 *
 * @project 深圳智能政务办公系统
 * @package zhbg.oaxt.common.kafka
 * @file KafkaFactory.java 创建时间:2018年12月6日上午10:09:31
 * @title 标题（要求能简洁地表达出类的功能和职责）
 * @description 描述（简要描述类的职责、实现方式、使用注意事项等）
 * @copyright Copyright (c) 2018 中国软件与技术服务股份有限公司
 * @company 中国软件与技术服务股份有限公司
 * @module 模块: 模块名称
 * @author  曹敏
 * @reviewer 审核人
 * @version 1.0
 * @history 修订历史（历次修订内容、修订人、修订时间等）
 *
 */
@SuppressWarnings("rawtypes")
public class KafkaFactory implements PooledObjectFactory<KafkaProducer> {
    /**配置文件*/
    private final Properties properties;

    /**
     * 
     *@constructor 构造方法
     *@param properties 参数
     */
    public KafkaFactory(Properties properties) {
        this.properties = properties;
    }
    /**
     * 
     *@name    中文名称
     *@description 相关说明
     *@time    创建时间:2018年12月6日上午10:10:05
     *@param pooledKafka 参数
     *@throws Exception 异常
     * @author   曹敏
     *@history 修订历史（历次修订内容、修订人、修订时间等）
     */
    public void activateObject(PooledObject<KafkaProducer> pooledKafka) throws Exception {
    }
    /**
     * 
     *@name    中文名称
     *@description 相关说明
     *@time    创建时间:2018年12月6日上午10:10:12
     *@param pooledKafka 参数
     *@throws Exception 异常
     * @author   曹敏
     *@history 修订历史（历次修订内容、修订人、修订时间等）
     */
    public void destroyObject(PooledObject<KafkaProducer> pooledKafka) throws Exception {
        final KafkaProducer kafkaProducer = (KafkaProducer) pooledKafka.getObject();
        kafkaProducer.close();
    }
    /**
     * 
     *@name    中文名称
     *@description 相关说明
     *@time    创建时间:2018年12月6日上午10:10:17
     *@return  返回值
     *@throws Exception
     * @author   曹敏
     *@history 修订历史（历次修订内容、修订人、修订时间等）
     */
    @SuppressWarnings("unchecked")
    public PooledObject<KafkaProducer> makeObject() throws Exception {
        return new DefaultPooledObject(new KafkaProducer<String, String>(properties));
    }
    /**
     * 
     *@name    中文名称
     *@description 相关说明
     *@time    创建时间:2018年12月6日上午10:10:35
     *@param pooledJedis  参数
     *@throws Exception   参数
     * @author   曹敏
     *@history 修订历史（历次修订内容、修订人、修订时间等）
     */
    public void passivateObject(PooledObject<KafkaProducer> pooledJedis) throws Exception {
    }
    /**
     * 
     *@name    中文名称
     *@description 相关说明
     *@time    创建时间:2018年12月6日上午10:11:07
     *@param pooledJedis  参数
     *@return  返回值
     * @author   曹敏
     *@history 修订历史（历次修订内容、修订人、修订时间等）
     */
    public boolean validateObject(PooledObject<KafkaProducer> pooledJedis) {
        return true;
    }
}
